第1回EMR勉強会に参加しました
こんにちは。くろの(福田)です。
先日、第1回EMR勉強会に参加してきました。
■開催概要
- 日時:2011年12月15日(金)
- 場所:タイムズビル24
- 主催:ヴェルク株式会社、クリエーションライン株式会社
- Webサイト:http://atnd.org/events/23056
- ハッシュタグ:#emrstudy_jp
■クラウド型Hadoop Service - Amazon Elastic MapReduce
クリエーションライン株式会社 李さん
- クラウド型Hadoopサービス
- オンデマンド
- -ジョブフロータイプ、データ処理タイプ、クラスタ規模を指定してHadoop作成
- プロビジョン
- Hadoopクラスタ構成/ソフトウェアインストールが自動的に行われる
- Amazon S3、RDS、SimpleDB
- エフェメラル
- -結果がS3に保存され、ジョブフローは削除される
- ephemeral:はかない、短命の、一時的な
- オンデマンド
- ジョブフロー
- EMRのエージェント(処理の受付)
- バッチジョブフロー(1回処理したら終了)
- インタラクティブフロー(要求を待ち続ける)
- ステップ
- データ処理やソフトウェア構成などの単位
- Hadoopジョブの実行
- 定義順で逐次的な処理
- Hadoopメソッド
- EMRでも従来通りにそのまま使える
- Streaming
- Hive(SQLライク)
- Pig(シェルスクリプトライク)
- CustomJAR
- Cascading
- これらのライブラリを用いてアプリケーションを構築する
- ツール、その他
- Ganglia Monitoring System:統計データグラフ表示ツール
- ログ:AWS Management Console経由、直S3
- 最適化
- Bootstrapアクション
- Hadoop環境構成のチューニング
- Hive環境構成のチューニング
- ジョブフローのリサイズ
- EC2インスタンスのタイプおよび数の決定
- Amazon EMRとは
- 調達や運用の手間ゼロ
- 運用管理のためのインターフェース
- データ処理のためのフレームワーク
- BigDataでもSmallDataでも何でもいい
※データ量はバイク便から貨物列車級まで対応可能!
■EMR公開事例のご紹介
Amazon Data Services Japan 大谷さん(@shot6)
- Foursquare
- スマートフォンチェックインデータ
- 機械学習、データ分析、トレンド分析、レポーティング
- EMR平均40ノードクラスタを動的に起動
- 地域の近似製で誰がチェックインしているかの分析
- ログ収集:Apache Flume
- ログ解析:Amazon S3
- ログ解析:Amazon EMR
- Razorfish
- So-net
- 広告配信ログの分析
- Etsy
- 年商$30M規模の巨大小売りサイト。Amazon.comのライバル
- Yelp
- 地理情報データ
※大谷さんは直前までAWSオンラインセミナーをやられていたので、少し会場到着が遅れました。私はAWSオンラインセミナーのQAタイム開始直後に会社を出て、会場にぎりぎり間に合いました(汗)
■クックパッドでのEMR利用事例
クックパッド 佐々木さん(@sasata299)
[slideshare id=10600897&doc=111215emr-111215052342-phpapp01]
- Hadoop利用初期
- 「たべみる」の1年分の検索データを分析
- 2009/9頃。MySQLでがんばろう。7000時間くらいかかるかもorz
- 1年のデータを1年分析だとダメだ
- EC2でHadoop、ClouderaのCDH1、RubyでHadoop Streamingで処理を記述
- 7000時間⇒30時間
- なぜEMRを使うようになったか
- Hadoopクラスタの起動が不安定
- Hadoopのバグにあたる
- SocketTimeoutExceptionが頻発
- CDH2にバージョン上げれば直る
- EMRが登場し始めた
- クラウデラはEC2とS3代だけでOK。なのでEMRの方が少し高い(1年前情報)
- パッチとかのことを考えるとEMRだよね(開発者の大きな負担の解消)
- Hadoop利用後期
- こんな処理に使っています
- ※MySQLでは扱いにくい処理(Group by系)
- MySQLで出来る事はMySQLで、MySQLで出来ない事はEMRで
- 最近のEMR事情
- 各エンジニアがそれぞれ利用
- Rubyで処理が書けるので、誰でも使える
- 特別な事はしなくて普通に使っている
- 利用する際の敷居が低いのがいいですね
- 工夫している点
- 参照量を減らす
- 5万件のデータがあると。まずは何らかのルールでデータをグループ(1グループ50件)に分割。
- そしてグループ内を処理。最後に集計。
- 非エンジニアでも
- 非エンジニアでも触れられるようにIFを用意
- 条件(期間など)を入力するとExcelが帰ってくるようなアプリを作成
■アクセスログ解析システム構築事例 インフラ設計編/アプリ設計編
ヴェルク 津久井さん(@quaterkota)、石田さん(@o918)
[slideshare id=10611656&doc=201112151emr-111216030335-phpapp02]
- インフラ設計編
- ・利用時のみ起動するインスタンス群⇒運用コストを安価に
- アプリ設計編
- Hive
- MapReduceのラッパー
- SQL(HiveQL)で操作ができる
- @ITにHiveの記事有り。またはオフィシャルサイト
- データ作成
- RDBのようにTableを作成し、Insertでデータを挿入
- EMRが常時起動している場合はOK。そうでない場合は使えない
- データ抽出
- CREATE文でTableの作成とS3上のデータをロード
- (HDFSにデータがロードされた状態)
- Hadoop Hive環境+S3 DATA
- SELECTの出力先をS3に指定
- EMR起動時にHiveQLを指定
- ■その他
- EMRエラーハンドリング
- EMR完了確認
- EMR起動制限
- Hive
■ソーシャルゲームのEMR利用事例~ユーザーに愛されるカスタマーサポートを目指して~
gumi 本間さん(@CkReal)
[slideshare id=10609485&doc=20111215emr1-111215203121-phpapp01]
- EMR利用に至る経緯:gumiの課題
- カスタマーサポートの対応負荷
- エンジニアが調査に時間を取れない
- NFSサーバーが単一障害点
- EMRを使ってみて
- S3上のファイルをいつでも利用できる
- 必要な時だけEMRクラスタを使える
- 変化する要件にも対応しやすい
- たまにジョブが失敗する
- チューニング方法模索中
■最後に
今回はHadoopやEMR未体験状態ですが、来年からEMR使ってみたいという事で参加しました。 HadoopやEMRはまだ若い技術なのでツールなどが成熟していない印象でしたが、データ分析分野では今後必須となる技術なので、今後積極的にウォッチ、活用していきたいと思います。
おしまい